<?php

$host = '127.0.0.1';
$port = 9501;
$mode = SWOOLE_PROCESS; // 进程模式 多进程的方式
$sock_type = SWOOLE_SOCK_TCP; // tcp协议 tcp是稳定有效的链接

// 创建服务器
// $serv = new swoole_server($host, $port);
$serv = new swoole_server($host, $port, $mode, $sock_type); // 监听 9501 端口


// bool $swoole_server->on(string $event_name, callable $callback)
/**
 * $event_name 事件名称:
 * connect 连接事件 当建立连接的时候触发
 * recieve 接收数据事件
 * close 关闭连接事件
 */

 // 监听连接事件
 /**
  * 参数说明:
  * $serv 服务器对象
  * $fd 客户端连接的唯一标识符
  */
$serv->on('connect', function ($serv, $fd) {
    echo "Client: Connect.\n";
    var_dump($serv);
    var_dump($fd);
});

// 监听数据接收事件
 /**
  * 参数说明:
  * $serv 服务器对象
  * $fd 客户端连接的唯一标识符
  * $from_id 来自哪个reactor线程 客户端id
  * $data 客户端发送的数据
  */
$serv->on('receive', function ($serv, $fd, $from_id, $data) {
    echo "Client: {$fd} send data: {$data}.\n";
    $serv->send($fd, 'Swoole: '.$data);
});

// 监听连接关闭事件
$serv->on('close', function ($serv, $fd) {
    echo "Client: Close.\n";
});

// 启动服务器
$serv->start();
